import { login, getProfile, getUserDetailById } from '@/api/user.js'
// import { getToken, setToken } from '@/utils/auth'
import router from '@/router'

const state = {
  // 存储数据
  // token:getToken()||''
  token: localStorage.getItem('token') || '',
  profile: {}
}
const mutations = {
  // 修改state的数据都要通过mutation
  setToken(state, data) {
    // setToken(data)
    localStorage.setItem('token', data)
    // 第一次没有token值，要给state.token赋值
    state.token = data
  },
  // 存储用户信息
  setProfile(state, data) {
    state.profile = data
  },
  // 退出时，清除数据
  removeToken(store) {
    // 要清除本地存储，否则一刷新又回到主页中
    localStorage.removeItem('token')
    store.token = ''
  },
  removeProfile(store) {
    store.profile = {}
  }
}
const actions = {
  // 异步操作，发送请求
  async login(store, data) {
    const res = await login(data)
    console.log('获取数据')
    // console.log(res)
    // 通知mutation更改数据
    store.commit('setToken', res)
    // 登录是存储时间
    localStorage.setItem('loginTime', Date.now())
  },
  async getProfile(store) {
    const res = await getProfile()
    const userInfo = await getUserDetailById(res.userId)
    // console.log('用户详情', res)
    store.commit('setProfile', { ...res, ...userInfo })
    console.log('profile', store.state.profile)
  },
  // 封装退出登录
  logOut(store) {
    store.commit('removeToken')
    store.commit('removeProfile')
    router.push('/login')
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}

